#include <stdio.h>
#define MaxSize 100
typedef int DataType;

typedef struct
{
    DataType list[MaxSize];
    int size;
}SeqList;

void ListInitiate(SeqList *L)/*初始化顺序表L*/
{
    L->size = 0; /*定义初始数据元素个数*/
}

int ListLength(SeqList L)//返回顺序表L的当前数据元素个数
{
    return L.size;
}

int ListInsert(SeqList *L,int i,DataType x)
/*在顺序表L的位置i(0<=i<=size)前插入数据元素值x*/
/*插入成功后返回1，插入失败返回0*/
{
    int j;
    if(L->size >=MaxSize)
    {
        printf("顺序表已满无法插入！ \n");
        return 0;
    }
    else if (i<0 || i> L ->size)
    {
        printf("参数i不合法! \n");
        return 0;
    }
    else{
        //此段程序有错
        for(j = L ->size;j > i; j--) L->list[j+1] = L->list[j];/*为插入做准备*/
        L -> list[i] = x;//插入
        L->size ++;//元素个数加1
        return 1;
    }
}

int ListDelete(SeqList *L,int i,DataType *x)
//删除顺序表L中位置i(0<=i<=size - 1)的数据元素值并存放到参数x中
//删除成功返回1，删除失败返回0
{
    int j;
    if(L->size <= 0)
    {
        printf("顺序表已空无数据可删! \n");
        return 0;
    }
    else if(i < 0 ||i> L->size-1)
    {
        printf("参数i不合法");
        return 0;
    }
    else
    {
        //此段程序有错误
        *x = L->list[i];//保存删除的元素到参数x中
        for(j = i+1;j <=L->size -1;j++) L ->list[j-1] = L->list[j];//依次前移
        L->size--;//数据元素个数减1
        return 1;
    }
}

int ListGet(SeqList L, int i ,DataType *x)
//取顺序表L中第i个数据元素的值存于x中，成功则返回1，失败返回0
{
    if(i < 0 || i > L.size -1)
    {
        printf("参数i不合法!\n");
        return 0;
    }
    else
    {
        *x = L.list[i];
        return 1;
    }
}
/*有错误：实现函数体，实现在L内查找x。
当x存在于L中时，返回x所在的索引的最小值
当x不存在于L中时，返回-1*/
int ListSearch(SeqList L,DataType x){
     int i=0;
	 if(x<0||x>L.size){ return -1;}
	 else
	 {
         for(i;i<L.size;i++)
         {
		 if(L.list[i]==x)
         {
             return i;
         }
}
     }
}
int main(){
    SeqList myList;
    int i, x;
    ListInitiate(&myList);
    for(i = 0;i<10;i++)
    ListInsert(&myList ,i ,i+1);
    ListDelete(&myList ,4,&x);
    for(i=0;i <ListLength(myList);i++)
    {
        //此段程序有一处错误
        ListGet(myList,i,&x);
        printf("%d",x);
    }
    printf("\n%d\n",ListSearch(myList,9));
    printf("%d\n",ListSearch(myList,11));
    return 0;
}
